package cn.tx.two;

import cn.tx.RabbitMQUtils;
import com.rabbitmq.client.*;
import org.junit.Test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author Mxb
 * @version 1.0
 * @date 2020/10/4 17:59
 */
public class Consumer1 {
    @Test
    public void receiveMessage() throws IOException, TimeoutException {
        Connection connection = RabbitMQUtils.getConnection();
        Channel channel = connection.createChannel();
        /**
         * 绑定队列
         * 参数1：队列名如果发送消息时，队列在mq 里面不存在，它会创建一个新
         的队列
         * 参数2：是否持久化如果为false 当MQ 重启时，消息会丢失
         * 参数3：是否独享。true 代表只有当前的connection 可以访问这个队列
         * 参数4：是否自动删除是否用完之后就删除
         * 参数5：其它参数
         */
        channel.queueDeclare("hello",true,false,false,null);
        channel.basicConsume("hello",true,new DefaultConsumer(channel){
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope,
                       AMQP.BasicProperties properties, byte[] body) throws IOException {
                System.out.println("消费者【1】收到消息："+new String(body));
            }
        });
        System.out.println("消费者【1】启动成功");
        //不能让程序结束
        System.in.read();
        //关闭
        RabbitMQUtils.closeChannelAndConnection(channel,connection);
    }
}
